package com.cy.embeddingdemo.controller;

import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;

public class JsonFileWriter {

    /**
     * 将 JSON 数据写入到指定目录的文件中
     *
     * @param directoryPath 目标目录路径
     * @param fileName      文件名
     * @param jsonObject    要写入的 JSON 对象
     */
    public static void writeJsonToFile(String directoryPath, String fileName, JSONObject jsonObject) {
        // 检查目录是否存在，如果不存在则创建
        File directory = new File(directoryPath);
        if (!directory.exists()) {
            directory.mkdirs(); // 创建目录
        }

        // 构建完整的文件路径
        String filePath = directoryPath + File.separator + fileName;

        // 将 JSON 对象转换为字符串
        String jsonString = JSON.toJSONString(jsonObject); // 格式化 JSON 输出

        // 写入文件
        try (BufferedWriter writer = new BufferedWriter(new FileWriter(filePath))) {
            writer.write(jsonString);
            System.out.println("JSON数据已成功写入文件：" + filePath);
        } catch (IOException e) {
            System.err.println("写入文件时发生错误：" + e.getMessage());
            e.printStackTrace(); // 打印完整的堆栈信息
        }
    }

    public static void main(String[] args) {
        // 示例 JSON 数据
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("name", "Kimi");
        jsonObject.put("age", 25);
        jsonObject.put("city", "Moonshot");

        // 目标目录和文件名
        String directoryPath = "output/json"; // 目标目录
        String fileName = "example.json";     // 文件名

        // 调用方法写入文件
        writeJsonToFile(directoryPath, fileName, jsonObject);
    }
}